﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenReflect.Common;
using OpenReflect.Domain.Contracts.Declarations;
using OpenReflect.Domain.Contracts.Generics;

namespace OpenReflect.Domain.Model.Declarations
{
	public class ClassDeclaration:IClassDeclaration
	{
		#region IClassDeclaration Members
		//TODO: Enum implementation
		public bool IsAbstract
		{
			get; set;
		}

		public bool IsStatic
		{
			get; set;
		}

		#endregion

		#region ITypeDeclaration Members

		public IList<IGenericArgument> GenericArguments
		{
			get; set;
		}

		#endregion

		#region IDeclaration Members

		public Accessor AccessModifier
		{
			get; set;
		}

		#endregion

		#region ICodeItem Members

		public string Name
		{
			get; set;
		}

		#endregion


		//TODO: Better way to check for equals;
		public override bool Equals(object obj)
		{
			IClassDeclaration decl = obj as IClassDeclaration;
			return obj == null ? false : decl.Name.Equals(decl.Name);
		}
	}
}
